package br.progweb.webapp.model;

import org.appfuse.model.BaseObject;

import javax.persistence.*;
import java.util.Date;

/**
 * Created with IntelliJ IDEA.
 * User: luiza
 * Date: 04/09/12
 * Time: 23:59
 * To change this template use File | Settings | File Templates.
 */

@Entity
public class Contato extends BaseObject {
// ------------------------------ FIELDS ------------------------------

    private Long id;
    private String nome;
    private String empresa;
    private Long telefone;
    private Long celular;
    private String email;
    private String facebook;
    private String twitter;
    private String gravatarURL;
    private Grupo grupo;
    private String observacoes;
    @Temporal(TemporalType.DATE)
    private Date dtAniversario;

// --------------------- GETTER / SETTER METHODS ---------------------

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Column(name = "celular")
    public Long getCelular() {
        return celular;
    }

    public void setCelular(Long celular) {
        this.celular = celular;
    }

    @Column(name = "email", length = 30)
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Column(name = "empresa", length = 50)
    public String getEmpresa() {
        return empresa;
    }

    public void setEmpresa(String empresa) {
        this.empresa = empresa;
    }

    @Column(name = "facebook", length = 30)
    public String getFacebook() {
        return facebook;
    }

    public void setFacebook(String facebook) {
        this.facebook = facebook;
    }

    @Column(name = "gravatarurl", length = 200)
    public String getGravatarURL() {
        return gravatarURL;
    }

    public void setGravatarURL(String gravatarURL) {
        this.gravatarURL = gravatarURL;
    }

    @ManyToOne
    public Grupo getGrupo() {
        return grupo;
    }

    public void setGrupo(Grupo grupo) {
        this.grupo = grupo;
    }

    @Column(name = "nome", length = 50)
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    @Column(name = "observacoes", length = 150)
    public String getObservacoes() {
        return observacoes;
    }

    public void setObservacoes(String observacoes) {
        this.observacoes = observacoes;
    }

    @Column
    public Long getTelefone() {
        return telefone;
    }

    public void setTelefone(Long telefone) {
        this.telefone = telefone;
    }

    @Column(name = "twitter", length = 30)
    public String getTwitter() {
        return twitter;
    }

    public void setTwitter(String twitter) {
        this.twitter = twitter;
    }

    //get e set para o atributo dtAniversario
    @Column
    public Date getDtAniversario(){
        return dtAniversario;
    }

    public void setDtAniversario(Date dtAniversario){
        this.dtAniversario = dtAniversario;
    }
// ------------------------ CANONICAL METHODS ------------------------


    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Contato contato = (Contato) o;

        if (celular != null ? !celular.equals(contato.celular) : contato.celular != null) return false;
        if (email != null ? !email.equals(contato.email) : contato.email != null) return false;
        if (empresa != null ? !empresa.equals(contato.empresa) : contato.empresa != null) return false;
        if (facebook != null ? !facebook.equals(contato.facebook) : contato.facebook != null) return false;
        if (gravatarURL != null ? !gravatarURL.equals(contato.gravatarURL) : contato.gravatarURL != null) return false;
        if (grupo != null ? !grupo.equals(contato.grupo) : contato.grupo != null) return false;
        if (!id.equals(contato.id)) return false;
        if (!nome.equals(contato.nome)) return false;
        if (observacoes != null ? !observacoes.equals(contato.observacoes) : contato.observacoes != null) return false;
        if (telefone != null ? !telefone.equals(contato.telefone) : contato.telefone != null) return false;
        if (twitter != null ? !twitter.equals(contato.twitter) : contato.twitter != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = id.hashCode();
        result = 31 * result + nome.hashCode();
        result = 31 * result + (empresa != null ? empresa.hashCode() : 0);
        result = 31 * result + (telefone != null ? telefone.hashCode() : 0);
        result = 31 * result + (celular != null ? celular.hashCode() : 0);
        result = 31 * result + (email != null ? email.hashCode() : 0);
        result = 31 * result + (facebook != null ? facebook.hashCode() : 0);
        result = 31 * result + (twitter != null ? twitter.hashCode() : 0);
        result = 31 * result + (gravatarURL != null ? gravatarURL.hashCode() : 0);
        result = 31 * result + (grupo != null ? grupo.hashCode() : 0);
        result = 31 * result + (observacoes != null ? observacoes.hashCode() : 0);
        return result;
    }

    @Override
    public String toString() {
        return "Contato{" +
                "id=" + id +
                ", nome='" + nome + '\'' +
                ", empresa='" + empresa + '\'' +
                ", telefone=" + telefone +
                ", celular=" + celular +
                ", email='" + email + '\'' +
                ", facebook='" + facebook + '\'' +
                ", twitter='" + twitter + '\'' +
                ", gravatarURL='" + gravatarURL + '\'' +
                ", grupo='" + grupo + '\'' +
                ", observacoes='" + observacoes + '\'' +
                '}';
    }
}
